Algorithm based digital functions in electronic systems are typically implemented in one of two ways: with an integrated circuit micro-processor or a custom integrated circuit including application specific integrated circuits ASICs and field programmable gate arrays FPGAs. Each has its advantages and disadvantages and the selection of which to use is an important consideration. The electronic system designer must balance many factors including performance, power, availability of talent, time to market, design cost, and production cost.
Computable functions can be implemented within a microprocessor and thus a microprocessor provides a general purpose platform to compute any function without changing hardware. A processor efficiently multiplexes diverse software functionality into a single hardware implementation by decomposing functionality into discrete instructions and providing hardware to compute each of these instructions. As instruction computation occurs, it utilizes the available computation hardware. Instructions not currently being computed are stored in memory—a very efficient physical implementation structure. In this way, software running on a processor performs the functionality achieved through custom hardware. Although this is similar to the reprogramming capability of an FPGA, the processor, relying on the storage of inactive instructions, achieves hardware reuse in real time with a very limited instruction set. Thereby, for certain functionality, a processor can achieve an efficient implementation over broad functionality.
In addition to functional efficiency, a processor enables a designer to implement at a higher level of abstraction. Unlike an ASIC or FPGA, there is no need to manage timing convergence or placement of functions on the silicon. This allows a user to produce a device that computes a digital algorithm or function using a higher level of abstraction. By designing at a higher level of abstraction, a software design project often requires many fewer staffing and development resources than an ASIC or FPGA.
Because it is architected to address broad functionality, a processor has limitations in its performance, especially when computing functions which have strict throughput constraints. A processor design must have the entire system performance accelerated to improve performance in specific areas of functionality.
Some integrated circuit processor implementations contain dedicated hardware functionality to overcome these performance issues and provide a fixed degree of concurrency. Some are focused on specific types of algorithms or functionalities, such as Digital Signal Processing or telecommunications processing. However, these customizations make the processor less general, reducing its applicability to certain other functions.
Current integrated circuit processors do not provide a customization path to address general sequential and concurrent computational bottlenecks of control and data after implementation of the processor, i.e., there is no mechanism to incorporate the hardware capability of ASIC or FPGA designs.
Custom integrated circuits ICs are the other major way in which digital algorithms or functions may be implemented in electronic systems.
ASIC and FPGA technologies currently used to implement custom digital IC hardware require designers to utilize a low-level set of computational and interconnect elements to represent the desired functionality. Because of the complexity of the design elements, both technologies require a very detailed analysis of timing delays associated with the computational and interconnect elements to verify the correct functionality of the design. In addition, the designer must manage all the placement of the functions on the physical silicon.
With ASIC technology, an ASIC supplier provides a designer with a library of pre-configured, standard logic cells with which the customer defines functionality. The customer also defines interconnects. ASIC suppliers build wafers of ICs with customer defined logic and interconnect. ASICs, once built, are permanently fixed in configuration and functionality. Logic and interconnects cannot change.
ASIC technology has high performance and low recurring cost, but can cost tens of millions of dollars to design and produce at 180 nm and below. The technology is hard-wired, meaning that it cannot be changed once it is manufactured. Thus ASIC technology requires a project with very high volumes to justify the focused hardware implementation of an ASIC design. Design and implementation schedules are long, especially when re-implementation for error correction is necessary and the fabrication risks are enormous. The costs and risks are accelerating with advances in fabrication technology leading to decreased use of ASIC design implementations.
FPGA suppliers, on the other hand, build wafers of integrated circuit chips that contain blank, programmable logic blocks with similarly programmable interconnects. A customer loads a configuration that defines all the logic blocks and interconnects into the integrated circuit chip. This allows the FPGA logic and interconnect to be programmed in a non-real time fashion after fabrication. This mitigates some of the fabrication risk associated with an ASIC design style. Although it can be targeted at specific functionality, FPGA logic is unable to be re-configured during execution to improve the efficiency of implementation.
Current FPGA integrated circuit architectures were created when the delay of the logic blocks dominated difficulty in design implementation. Fabrication technology has shifted the dominant delay factor to be interconnect RC. Current FPGA interconnect solutions consume more than 50% of the area and timing in solutions. The focus of current FPGA technology on the logic block delay is ill-suited to converge on a timing solution and, thereby, scale with advances in fabrication technology (Moore's Law). This mismatch prevents cost and design time from scaling appropriately with fabrication technology.
Integrated circuit processors provide universal functionality within a single piece of silicon, flexibility, and ease of design. However, such processors are unable to perform some calculations at needed performance levels. ASICs are cost-effective in production, and have the maximum available performance, yet cost large amounts of money and time to design. Integrated circuit FPGAs provide some performance acceleration compared to processors, and are flexible devices, yet cost a great deal during production and are difficult to design with.
An implementation platform is needed that has the best attributes of the various solutions including: re-use of hardware, ease of design, and instant reconfigurability of a processor; the performance and field programmability of an FPGA; with cost and power of closer to that of ASIC.